.和->的区别?

来源:百度知道 编辑:UC知道 时间:2024/05/04 13:56:39
C/C++中,xx.yy和aa->bb有什么区别,分别在哪些情况下使用?
比如:
typedef struct tag_aa{
int item;
double Count;
} aab;

aab aa;
aa.item=3;
此时为什么不能使用->???什么情况下使用->?
二楼能否回答详细一点,谢谢!

struct mid{
int id;};

main(){
mid m;
m.id = 3;//m是一个对象
mid *n;
n->id = 3;}//n是一个对象指针

区别不大,只是为了强调:
通过对象引用成员时用"."
通过指针引用成员时用"->"
当然两者可以互相转化。如:
struct mid{
int id;};

main(){
mid m,*p=&m;
m.id = 3; //m是一个对象
p->id = 3; //p是一个对象指针
}
也可以写成:
main(){
mid m,*p=&m;
(&m)->id = 3; //m是一个对象
(*p).id = 3; //p是一个对象指针
}
可以看出后一种表达比较不直观,尽管作用相同。

用结构变量调用内部数据用"."
而用结构指针调用内部数据用"->" 就拿你这个来说
aab aa;
aa.item=3;

下面就有区别了
aab aa;
aab *p;
p=&aa;
p->item=3

区别可谓大了
通过对象调用成员时用"."
通过指针调用成员时用"->"
后者支持多态,效率问题会在某些时候出现.